|
DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇ≈ÇÕ Open Transport ÇÃäÑÇËçûÇ›ëŒâûÉÅÉÇÉää«óùÉVÉXÉeÉÄÇÃìÆçÏå¥óùÇΔdžǻÇΩÇÃÉ\ÉtÉgÉEÉFÉAÇ≈å¯â ìIÇ…óòópÇ∑ÇÈï˚ñ@Çê‡ñæÇµÇ‹Ç∑ÅB
DZÇÃÉeÉNÉjÉJÉãÉmÅ[ÉgÇÕÅAOpen Transport ÇÃÉNÉâÉCÉAÉìÉgÇ‹ÇΩÇÕÉJÅ[ÉlÉãÉRÅ[ÉhÇäJî≠Ç∑ÇÈè„ãâÉvÉçÉOÉâÉ}ÇëŒè€Ç…ǵǃǢNjÇ∑ÅB
Åm2001îN1åé9ì˙Ån
|
OT ÉÅÉÇÉää«óùì¸ñÂ
Open Transport ÇÕäÑÇËçûÇ›éûÇ…åƒÇ—èoǵâ¬î\Ç»ÉÅÉÇÉääÑÇËìñǃÉãÅ[É`ÉìÇëΩêîópà”ǵǃǢNjÇ∑ÅBOTAllocMemÅAOTAllocMemInContextÅAOTAllocÅAOTAllocInContextÅAOTAllocSharedClientMemÅAOTAllocPortMem Ç≈Ç∑ÅBÇ«ÇÒÇ»èÍçáÇ…Ç«ÇÃÉãÅ[É`ÉìÇégǶnjÇÊǢǩÅiÇ‹ÇΩÅADZǧǵÇΩÉãÅ[É`ÉìÇ™ Open Transport Ç‚ Mac OS ä«óùâ∫ÇÃÉÅÉÇÉäDžǫǧâeãøÇ∑ÇÈÇ©ÅjÇímÇÈÇ…ÇÕÅAOT ÇÃÉÅÉÇÉää«óùÉVÉXÉeÉÄÇóùâÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB
ã≠óÕÇ»ÉÅÉÇÉäÉvÅ[Éã
OT ÉÅÉÇÉää«óùÇÕ 4 ǬÇÃÉÅÉÇÉäÉvÅ[ÉãÇÃè„à Ç…à íuǵNjÇ∑ÅB
- ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÕ InitOpenTransportÅiÇ‹ÇΩÇÕ InitOpenTransportUtilitiesÅjÇåƒÇ—èoǵÇΩÉvÉçÉOÉâÉÄDžǪÇÍǺÇÍäÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBǪÇÃÉvÉçÉOÉâÉÄÇà OT ÉÅÉÇÉääÑÇËìñǃóvãÅÇñûÇΩÇ∑LJÇÃÇ≈ÅAÉvÉçÉOÉâÉÄÇ™ CloseOpenTransport ÇåƒÇ—èoÇ∑ÇΔÅiñæé¶ìIÇ‹ÇΩÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃèIóπÇ≈Åjîjä¸Ç≥ÇÍÇ‹Ç∑ÅB
- ã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÅiÉlÉCÉeÉBÉuÉvÅ[ÉãÇΔLJåƒÇŒÇÍÇÈÅjÇÕç≈èâÇÃÉvÉçÉOÉâÉÄÇ™Åií èÌÇÕ AppleTalk ÉvÉçÉgÉRÉãÉXÉ^ÉbÉNÇ™ÉuÅ[ÉgÉVÅ[ÉPÉìÉXÇÃç≈èâÇÃǟǧÇ≈ÅjInitOpenTransport ÇåƒÇ—èoÇ∑ÇΔäÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBOT ÇÃÉNÉâÉCÉAÉìÉgÉâÉCÉuÉâÉäÇ™äÑÇËìñǃÇÈÉÅÉÇÉäÇÃëÂïîï™ÇÕDZÇÃÉvÅ[ÉãÇégópǵNjÇ∑ÅB
- ÉJÅ[ÉlÉãÉvÅ[ÉãÇÕÅAOT ÉJÅ[ÉlÉãÇÃÉçÅ[ÉhéûÇ…äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBDZÇÍÇÕ OT ÉJÅ[ÉlÉãÇ‚ÉvÉâÉOÉCÉìÇ™égópǵNjÇ∑Åió·Ç¶ÇŒ STREAMS ÇÃÉÇÉWÉÖÅ[ÉãÇ‚ÉhÉâÉCÉoÅBÅj
- É|Å[ÉgÉvÅ[ÉãÇÕÉvÉçÉOÉâÉÄÇ™ÇÕÇ∂Çflǃ InitOpenTransport Ç‹ÇΩÇÕ InitOpenTransportUtilities ÇåƒÇ—èoÇ∑ÇΔäÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBDZÇÃÉvÅ[ÉãÇÕÉ|Å[ÉgÇ…ä÷Ç∑ÇÈèÓïÒÇï€éùǵNjÇ∑ÅBDZÇÍÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇΔÇÕà·Ç¢Ç‹Ç∑ÅBÉ|Å[ÉgÉXÉLÉÉÉiÇÕÅAÉJÅ[ÉlÉãÇÉçÅ[ÉhǵǻÇ≠ǃLJÅiǬNjÇËÉJÅ[ÉlÉãÉvÅ[ÉãǙǻÇ≠ǃLJÅjégǶNjÇ∑ÅB
Open Transport ÉÅÉÇÉäÉvÅ[ÉãÇÕ Apple Shared Library ManagerÅiASLMÅjTStandardPool ÉNÉâÉXÇ≈é¿ëïÇ≥ÇÍÅADZÇÃÉNÉâÉXÇÃëÆê´ÇÃÇ¢Ç≠ǬǩÇåpè≥ǵNjÇ∑ÅB
- Ç«ÇÃÉvÅ[ÉãLJèÌÇ… Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇÃÉ]Å[ÉìÇ…äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅB
- Ç«ÇÃÉvÅ[ÉãDžLJèâä˙ÉTÉCÉYǙdžÇËÇ‹Ç∑ÅB
- ÉÅÉÇÉäÉvÅ[ÉãÇÕäÑÇËçûǛDžëŒâûǵǃǢNjÇ∑ÅBOT ÉÅÉÇÉäÉvÅ[ÉãÇ©ÇÁÇÕǢǬÇ≈LJÉÅÉÇÉäÇäÑÇËìñǃÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBǵǩǵÅAÉVÉXÉeÉÄÉ^ÉXÉNéûDžǵǩÉvÅ[ÉãÇägëÂÇ∑ÇÈDZÇΔÇÕÇ≈Ç´Ç‹ÇπÇÒÅBDZÇÃÇΩÇflÅAäÑÇËçûÇ›éûÇ…ÉÅÉÇÉäÇäÑÇËìñǃÇÈÇΔÅAóvãÅÇñûÇΩÇ∑ÇÃÇ…è\ï™Ç»ÉÅÉÇÉäÇ™É]Å[Éìì‡Ç…džǡǃLJÅAäÑÇËìñǃDžé∏îsÇ∑ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅB
- ÉÅÉÇÉäÇ™ë´ÇËÇ»Ç≠Ç»ÇÈÇΔÅAÉÅÉÇÉäÉvÅ[ÉãÇÕÉVÉXÉeÉÄÉ^ÉXÉNéûÇ… Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ©ÇÁÉÅÉÇÉäÇäÑÇËìñǃNjÇ∑ÅBÉÅÉÇÉäÉvÅ[ÉãÇÕàÍíËÇÃÉpÅ[ÉZÉìÉgíPà Ç≈í«â¡Ç≥ÇÍǃǢǴNjÇ∑ÅBDZÇÍÇëùâ¡ó¶ÇΔåƒÇ—Ç‹Ç∑ÅBëùâ¡ó¶ÇÕç≈è¨ëùâ¡ó Çâ∫âÒÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB
- ÉvÅ[ÉãÇ™ägëÂÇ≥ÇÍÇÈÇÃÇÕãÛÇ´ÉXÉyÅ[ÉXÇ™â∫å¿Çâ∫âÒÇ¡ÇΩèÍçáÇ≈Ç∑ÅBè„å¿Ç‡Ç†ÇËÅADZÇÍÇè„âÒÇÈÇΔÉvÅ[ÉãÇÕèkè¨ÇäJénǵNjÇ∑ÅBDZÇÃã@î\ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇæÇØÇ™óòópǵNjÇ∑ÅB
íçà”:
Open Transport ÇÕ ASLM ÇÃÉÅÉÇÉãÉvÅ[Éãã@î\ÇóòópǵǃǢNjÇ∑Ç™ÅAOpen Transport ÇÃç°å„ÇÃÉoÅ[ÉWÉáÉìÇÕ ASLM ÇNjǡÇΩÇ≠égÇÌÇ»Ç≠Ç»ÇËÇ‹Ç∑ÅBǪÇÃç€ Open Transport ÇÃÉÅÉÇÉäÉvÅ[ÉãÇÕ Open Transport é©ëÃÇ™é¿ëïÇ∑ÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB
|
íê:
Mac OS SDK CD Çà ASLM SDK Çà ASLM Developer's Guide Ç…ÇÕ ASLM ÉÅÉÇÉäÉvÅ[ÉãÉNÉâÉXDžǬǢǃLJǡÇΔè⁄ǵǢê‡ñæÇ™Ç†ÇËÇ‹Ç∑ÅB
|
ÉvÅ[ÉãÉpÉâÉÅÅ[É^
éüÇÃï\Ç…äeéÌ Open Transport ÉÅÉÇÉäÉvÅ[ÉãÇÃäÓñ{ìIÇ»ÉpÉâÉÅÅ[É^Çé¶ÇµÇ‹Ç∑ÅB
ÉvÅ[ÉãÇÃéÌï
|
É]Å[Éì
|
èâä˙íl
|
ëùâ¡ó¶
|
ç≈è¨ëùâ¡ó
|
â∫å¿
|
è„å¿
|
ÉNÉâÉCÉGÉìÉg [1]
|
ÉAÉvÉä
|
2K
|
20%
|
2K
|
1K
|
ñ≥å¿
|
ÉNÉâÉCÉGÉìÉg [2]
|
ÉVÉXÉeÉÄ
|
1K
|
20%
|
2K
|
512
|
ñ≥å¿
|
ã§óL [3]
|
ÉVÉXÉeÉÄ
|
2K
|
20%
|
4K
|
2K+1
|
ñ≥å¿
|
ã§óL [4]
|
ÉVÉXÉeÉÄ
|
3K
|
20%
|
4K
|
3K+1
|
ñ≥å¿
|
ÉJÅ[ÉlÉã [6]
|
ÉVÉXÉeÉÄ [9]
|
4K [5]
|
20%
|
34K
|
34K+1
|
[10]
|
ÉJÅ[ÉlÉã [7]
|
ÉVÉXÉeÉÄ [9]
|
250K
|
20%
|
34K
|
34K+1
|
[10]
|
ÉJÅ[ÉlÉã [8]
|
ÉVÉXÉeÉÄ [9]
|
16K
[5]
|
20%
|
34K
|
34K+1
|
[10]
|
É|Å[Ég
|
ÉVÉXÉeÉÄ
|
2K
|
20%
|
1K
|
1K+1
|
ñ≥å¿
|
íê:
- DZÇÃçsÇÕÅAOT ÉAÉvÉäÉPÅ[ÉVÉáÉìÉâÉCÉuÉâÉäÅiñºëOÇ™ÅuAppÅvÇ≈èIÇÌÇÈLJÇÃÅjÇÉäÉìÉNÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉvÉçÉOÉâÉÄÇ≈ÅAInitLibraryManager ÇåƒÇ—èoǵǃǢǻǢLJÇÃÇ≈Ç∑ÅB
- DZÇÃçsÇÕÅAOT ÉGÉNÉXÉeÉìÉVÉáÉìÉâÉCÉuÉâÉäÅiñºëOÇ™ÅuExtnÅvÇ≈èIÇÌÇÈLJÇÃÅjÇÉäÉìÉNÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉvÉçÉOÉâÉÄÇ≈ÅAInitLibraryManager ÇåƒÇ—èoǵǃǢǻǢLJÇÃÇ≈Ç∑ÅB
- Open Transport 1.3 à»ëO
- Open Transport 2.0 à»ç~
- Ç±ÇøÇÁÇ≈è⁄ǵÇ≠âê‡Ç≥ÇÍǃǢNjÇ∑ÅB
- Open Transport 1.3 à»ëO
- Open Transport 2.0 Ç©ÇÁ 2.5 Ç‹Ç≈
- Open Transport 2.6 à»ç~
- OT ÇÕÅAâºëzÉÅÉÇÉäÇÃäœì_Ç©ÇÁÅAÉJÅ[ÉlÉãÉvÅ[ÉãÇÃÉÅÉÇÉäÇñæé¶ìIÇ…ÉzÅ[ÉãÉhǵNjÇ∑ÅBëºÇÃÉvÅ[ÉãÇÃÉÅÉÇÉäÇÃÉzÅ[ÉãÉhÇÕï€èÿÇ≥ÇÍÇ‹ÇπÇÒÅB
- OT ÉJÅ[ÉlÉãÉvÅ[ÉãÇÕâ∫ãLÇ…é¶Ç∑Ç¢Ç≠ǬǩÇÃóvàˆÇ…ǵÇΩǙǢÅAägëÂÇ‹ÇΩÇÕèkè¨ÇµÇ‹Ç∑ÅB
èdóv:
è„ãLÇ©ÇÁLJÇÌÇ©ÇÈÇÊǧDžÅAÉÅÉÇÉäÉvÅ[ÉãÇÃÉpÉâÉÅÅ[É^ÇÕó\çêÇ»Ç≠ïœçXÇ≥ÇÍÇÈDZÇΔǙdžÇËÇ‹Ç∑ÇÃÇ≈ÅADZÇÍÇÁÇÃílÇ…àÀë∂ǵǃÇÕÇ»ÇËÇ‹ÇπÇÒÅB
|
OT ÉÅÉÇÉäÇÃå¯â ìIÇ»óòópñ@
DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAOT ÉÅÉÇÉää«óùÉVÉXÉeÉÄÇå¯â ìIÇ…óòópÇ∑ÇÈÉqÉìÉgÇ‚ÉRÉcÇè–âÓǵNjÇ∑ÅB
OT ÉãÅ[É`ÉìÇΔÉvÅ[ÉãÇÃégópñ@
éüÇÃï\ÇÕÉÅÉÇÉääÑÇËìñǃÇçsǧ OT ÇÃàÍî ìIÇ»ÉãÅ[É`ÉìÇÇ‹ÇΔÇflÇΩLJÇÃÇ≈Ç∑ÅBǪÇÍǺÇÍÇÃäÑÇËìñǃó ÅAäÑÇËìñǃêÊÇÃÉvÅ[ÉãÇé¶ÇµÇ‹Ç∑ÅB
ÉãÅ[É`Éì
|
ÉvÅ[Éã
|
äTéZäÑìñó
|
OTAllocMem
[1],
OTAllocMemInContext
|
ÉNÉâÉCÉGÉìÉg
|
size ÉpÉâÉÅÅ[É^Ç…è]ǧ
|
OTAllocMem [1]
|
ÉJÅ[ÉlÉã
|
size ÉpÉâÉÅÅ[É^Ç…è]ǧ
|
OTAlloc
|
ÉNÉâÉCÉGÉìÉg
|
ref ÇΔ fields ÉpÉâÉÅÅ[É^Ç…è]ǧ
|
OTAllocSharedClientMem
|
ã§óL
|
size ÉpÉâÉÅÅ[É^Ç…è]ǧ
|
OTAllocPortMem
|
É|Å[Ég
|
size ÉpÉâÉÅÅ[É^Ç…è]ǧ
|
OTOpenEndpoint
|
ÉNÉâÉCÉGÉìÉg
ã§óL
É|Å[Ég
|
16 bytes
150 bytes
1 KB
|
OTStreamOpen
|
ã§óL
ÉJÅ[ÉlÉã
|
40 ÉoÉCÉg
1 KB
|
OTCreateConfiguration
|
ã§óL
|
100 ÉoÉCÉg [2]
|
OTSnd
|
ÉJÅ[ÉlÉã
|
n ÉoÉCÉg [3]
|
èdóv:
DZDZDžé¶ÇµÇΩó ÇÕäTéZÇ≈Ç∑ÅBégópíÜÇÃÉvÉçÉgÉRÉãÇÃëäëŒìIÇ»ï°éGÇ≥Ç‚ Open Transport ÇÃÉoÅ[ÉWÉáÉìÇ…ÇÊǡǃLJàŸÇ»ÇËÇ‹Ç∑ÅBÉvÉçÉOÉâÉÄÇÃÉÅÉÇÉäégópó ÇâêÕÇ∑ÇÈéwêjÇΔǵǃåfç⁄ǵNjǵÇΩÅB
|
Notes:
- OTAllocMem ÇÕÉäÉìÉNÇ∑ÇÈÉâÉCÉuÉâÉäÇ…ÇÊǡǃìÆçÏÇ™àŸÇ»ÇËÇ‹Ç∑ÅBOT ÉNÉâÉCÉAÉìÉgÉâÉCÉuÉâÉäÅió·Ç¶ÇŒ OpenTransportLibÅjÇΔÉäÉìÉNÇ∑ÇÈÇΔ OTAllocMem ÇÕÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇ©ÇÁÉÅÉÇÉäÇäÑÇËìñǃNjÇ∑ÅBOT ÉJÅ[ÉlÉãÉâÉCÉuÉâÉäÅiOpenTptModuleLib ǻǫÅjÇΔÉäÉìÉNÇ∑ÇÈÇΔ OTAllocMem ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇ©ÇÁÉÅÉÇÉäÇäÑÇËìñǃNjÇ∑ÅBOTAllocMemInContext ǻǫÇÃÅgInContextÅhÇ≈èIÇÌÇÈ OT ÉãÅ[É`ÉìÇÕä®à·Ç¢ÇǮDZÇ∑DZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBè⁄ǵÇ≠ÇÕÉeÉNÉjÉJÉãÉmÅ[Ég 1173ÅgUnderstanding Open Transport Asset TrackingÅhÇÇ≤óóâ∫Ç≥Ç¢ÅB
- ê≥ämÇ»ílÇÕç\ê¨ÇÃï°éGÇ≥Ç…ÇÊÇËÇ‹Ç∑ÅBDZDZDžé¶ÇµÇΩílÇÕ OTCreateConfiguration("serial") Ç÷ÇÃíPèÉÇ»åƒÇ—èoǵDžÇÊÇÈâ∫å¿ÇÃílÇ≈Ç∑ÅB
- DZÇÃÉÅÉÇÉäÇ™è¡îÔÇ≥ÇÍÇÈÇÃÇÕÅAÉGÉìÉhÉ|ÉCÉìÉgÇ™ëóêMÉfÅ[É^ÇÉRÉsÅ[Ç∑ÇÈèÍçáÅiACK Ç≈ï˙èoÇ≥ÇÍÇÈÅjÇæÇØÇ≈Ç∑ÅBDZÇÍÇ™ÉfÉtÉHÉãÉgê›íËÇ≈Ç∑ÅBÉRÉsÅ[ǵǻǢÇ≈ëóêMÇ∑ÇÈê›íËÇ≈džÇÍÇŒÅADZÇÃÉãÅ[É`ÉìÇÕÇ≤Ç≠è≠ó ÇÃä«óùñ⁄ìIÇÃÉÅÉÇÉäÇäÑÇËìñǃÇÈÇ…Ç∑ǨNjÇπÇÒÅB
MacsBugs Ç≈ÉÅÉÇÉäÉvÅ[ÉãÇí≤Ç◊ÇÈï˚ñ@
è„ãLÇÃâêÕÇÕÅAäeÉãÅ[É`ÉìÇåJÇËï‘ǵåƒÇ—èoǵǻǙÇÁäeÉÅÉÇÉäÉvÅ[ÉãÇ÷ÇÃâeãøÇãLò^Ç∑ÇÈDZÇΔÇ≈ìæÇÁÇÍÇΩãAî[ìIǻLJÇÃÇ≈Ç∑ÅBOT Ç…ÇÕÉÅÉÇÉäÉvÅ[ÉãÇÃóòópèÛãµÇë™íËÇ∑ÇÈÉvÉçÉOÉâÉ~ÉìÉOÉCÉìÉ^ÉtÉFÅ[ÉXÇÕdžÇËÇ‹ÇπÇÒÇ™ÅAMacsBug ÇégǧÇΔä»íPÇ…í≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
Ç‹Ç∏ÅAOT ÇÃÉEÉFÉuÉyÅ[ÉW Ç©ÇÁ Open Transport ÇÃÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇì¸éËǵÅAÉCÉìÉXÉgÅ[ÉãÉpÉbÉPÅ[ÉWÇ©ÇÁÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇéÊÇËèoǵNjÇ∑ÅB
Open Tpt Debug Installer
Open Transport Installer
Open Transport Files
OT Debugger Prefs
ÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇdžǻÇΩÇÃÉ}ÉVÉìÇÃÅuMacsBug PreferencesÅvÉtÉHÉãÉ_Ç…ÉRÉsÅ[ǵǃÅAÉ}ÉVÉìÇçƒãNìÆÇµÇ‹Ç∑ÅB
èdóv:
ÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇÕÅAdžǻÇΩÇ™ÉCÉìÉXÉgÅ[ÉãǵÇΩ OT ÇÃÉoÅ[ÉWÉáÉìÇΔçáívÇ∑ÇÈÉoÅ[ÉWÉáÉìî‘çÜÇéùǬ OT ÇÃÉfÉoÉbÉOÉCÉìÉXÉgÅ[ÉâÇ©ÇÁéÊÇËèoÇ∑DZÇΔÇ™èdóvÇ≈Ç∑ÅBÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇ…ÇÕÅAOT ÉrÉãÉhÉVÉXÉeÉÄÇ©ÇÁé©ìÆê∂ê¨Ç≥ÇÍÇΩ MacsBug ÉeÉìÉvÉåÅ[ÉgÇ™ä‹Ç‹ÇÍÅADZÇÍÇÕ OT ÇÃÉfÅ[É^ç\ë¢ëÃÇÃÉtÉBÅ[ÉãÉhÉåÉCÉAÉEÉgÇ…ìKçáǵǃǢNjÇ∑ÅBOT ÇÃÉoÅ[ÉWÉáÉìÇ™à·Ç§ÇΔÉåÉCÉAÉEÉgLJà·Ç¢Ç‹Ç∑ÅBåÎÇ¡ÇΩÉoÅ[ÉWÉáÉìÇà "OT Debugger Prefs" ÉtÉ@ÉCÉãÇégǧÇΔÅAMacsBug Ç≈ê≥ämÇ»åãâ ÇÕìæÇÁÇÍÇ‹ÇπÇÒÅB
|
ÅuOT Debugger PrefsÅvÉtÉ@ÉCÉãÇÉCÉìÉXÉgÅ[ÉãǵÇΩÇÁÅAäeéÌ OT ÉÅÉÇÉäÉvÅ[ÉãÇíTǵǃì‡óeï\é¶Ç™â¬î\Ç≈Ç∑ÅBç≈èâÇ…ÅAOT ÉOÉçÅ[ÉoÉãóÃàÊÇï\é¶ÇµÇ‹Ç∑ÅB68K ÇΔ PowerPC Ç≈ÇÕÅAï˚ñ@Ç™àŸÇ»ÇËÇ‹Ç∑ÅBǪÇÍǺÇÍà»â∫ÇÃÉZÉNÉVÉáÉìÇ≈é¶ÇµÇ‹Ç∑ÅB
PowerPC Ç≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvÇ∑ÇÈ
PowerPC Ç≈ÇÕéüÇÃÉRÉ}ÉìÉhÇ≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvǵNjÇ∑ÅB
>>> dm __gOTGlobal OTGlobal
Displaying OTGlobal at 0006BDA0
0006BDA0 fGestaltValue 0000003F
0006BDA4 f68KDeferredProc 00000000
0006BDA8 fVersion 01308000
[... à»â∫è»ó™ ...]
0006BF04 fClientGlobal
0006BF04 fClientList
0006BF04 fHead 005F1714
[... à»â∫è»ó™ ...]
0006BF30 fNativePool 00095320
[... à»â∫è»ó™ ...]
0006BF8C fKernelGlobal
0006BF8C fKernelPool 0039A4A0
0006BF90 fKernelPoolMaxSize #13421772
[... à»â∫è»ó™ ...]
0006BFD4 fPortPool 0037AA90
[... à»â∫è»ó™ ...]
|
OT ÇÕǪÇÃÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇ CFM ÉVÉìÉ{ÉãÅA__gOTGlobal ÇΔǵǃÉGÉNÉXÉ|Å[ÉgǵNjÇ∑ÅBè„ãLÇÃÉRÉ}ÉìÉhÇÕÅuOT Debugger PrefsÅvÇà OTGlobal ÉeÉìÉvÉåÅ[ÉgÇégǡǃǪÇÃÉAÉhÉåÉXÇÉ_ÉìÉvǵNjÇ∑ÅBÉÅÉÇÉäÇÃóòópèÛãµÇ…ä÷ǵǃǢǶnjÅAéüÇà 3 ǬÇÃÉtÉBÅ[ÉãÉhÇ™ä÷åWǵNjÇ∑ÅB
fNativePool -- ã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉAÉhÉåÉX
fKernelPool -- ÉJÅ[ÉlÉãÉvÅ[ÉãÇÃÉAÉhÉåÉX
fClientList.fHead -- OT ÉNÉâÉCÉAÉìÉgÉäÉXÉgÇÃêÊì™ÅBÉäÉXÉgÇÃç≈èâÇÃÉNÉâÉCÉAÉìÉgÇÕéüÇÃÉRÉ}ÉìÉhÇ≈É_ÉìÉvÇ≈Ç´Ç‹Ç∑ÅB
>>> dm 5f1714 RegisteredClient
Displaying RegisteredClient at 005F1714
005F1714 fLink
005F1714 fNext 005F15BC
005F1718 fProviders
005F1718 fHead 005F13D0
005F171C fStreams
005F171C fHead 00000000
005F1720 fWhoAmI 070A7134
[... à»â∫è»ó™ ...]
|
éüÇÃÉNÉâÉCÉAÉìÉgÇÕ fLink.fNex ÉtÉBÅ[ÉãÉhÇíHÇÍÇŒí≤Ç◊ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBfWhoAmI ǙdžǻÇΩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇéwÇ∑ÇÃǙdžǻÇΩÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈Ç∑ÅBé©ï™ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇå©Ç¬ÇØÇΩÇÁÅATLibraryManager ÉeÉìÉvÉåÅ[ÉgÇégǡǃ fWhoAmI É|ÉCÉìÉ^ÇÉ_ÉìÉvǵǃÅAASLM ÇΔÇÃê⁄ë±èÓïÒÇï\é¶Ç≈Ç´Ç‹Ç∑ÅB
>>> dm 70a7134 TLibraryManager
Displaying TLibraryManager at 070A7134
070A7134 __vptr 003873B0
070A7138 fPool 070A6780
070A713C fLibraryFile 00000000
070A7140 fDefaultPool 070A6780
[... à»â∫è»ó™ ...]
|
ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉAÉhÉåÉXÇÕ fDefaultPool ÉtÉBÅ[ÉãÉhÇ…ï€éùÇ≥ÇÍǃǢNjÇ∑ÅB
ÉvÅ[ÉãÇÃÉAÉhÉåÉXÇ™ÇÌÇ©ÇÈÇΔǪÇÍÇ≈Ç≥NjǥNjǻDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
- éüÇà MacsBug ÉRÉ}ÉìÉhÇÕÉvÅ[ÉãÇ…ä÷Ç∑ÇÈäÓñ{ìIÇ»èÓïÒÇï\é¶ÇµÇ‹Ç∑ÅB
>>> dm 70a6780 TMemoryPool
Displaying TMemoryPool at 070A6780
070A6780 __vptr 00386F40
070A6784 fMemList 070A6770
070A6788 fSize #2408
070A678C fLowMark #1797
070A6790 fHighMark #4294967295
070A6794 fMaxUsed #352
070A6798 fCurFree #2056
070A679C fZone 06F7CF00
070A67A0 fMemType #1
[... à»â∫è»ó™ ...]
|
fSize ÉtÉBÅ[ÉãÉhÇÕÉvÅ[Éãì‡ÇÃÉÅÉÇÉäÇÃëçó Ç≈Ç∑ÅBfCurFree ÇÕÉvÅ[ÉãÇ…écÇÈãÛÇ´ÉÅÉÇÉäó Ç≈Ç∑ÅB
- dumppool dcmd ÇÕÅAéüÇÃÇÊǧDžÉvÅ[Éãì‡ÇÃÉÅÉÇÉäÉuÉçÉbÉNÇÃÉäÉXÉgÇï\é¶ÇµÇ‹Ç∑ÅB
>>> dumppool 70a6780
Allocated Memory
----------------
70a7000( #16) 70a7010( #16) 70a7020( #168)
70a70c8( #64) "!$plnt"
70a7108( #40) "!$slst"
70a7130( #48) "!$lmgr"
Free Memory
-----------
70a67f8(#2056)
|
- dumprawpool dcmd ÇÕÅAéüÇÃÇÊǧDžÇÊÇËè⁄ç◊Ç»ÉäÉXÉgÇï\é¶ÇµÇ‹Ç∑ÅB
>>> dumprawpool 70a6780
Allocated Memory
----------------
F: 70a67f8(#2056)
A: 70a7000( #16) 70a7010( #16) 70a7020( #168)
A: 70a70c8( #64) "!$plnt"
A: 70a7108( #40) "!$slst"
A: 70a7130( #48) "!$lmgr"
|
68K Ç≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvÇ∑ÇÈ
68K Ç≈ÇÕéËèáǙǂǂï°éGÇ…Ç»ÇËÇ‹Ç∑ÅBç≈èâÇ…ÅAOT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇíTǵNjÇ∑ÅBDZÇÍÇ…ÇÕéüÇà MacsBug ÉRÉ}ÉìÉhÇégǢNjÇ∑ÅB
èdóv:
à»â∫ÇÃÇΔÇ®ÇËìÆçÏÇ≥ÇπÇÈÇΩÇflÇ…ÇÕÅAOT ÇÃÉfÉoÉbÉOÉoÅ[ÉWÉáÉìÇÉCÉìÉXÉgÅ[ÉãǵǃÅAMacsBug Ç™ FetchOTGlobalÉVÉìÉ{ÉãÇî≠å©Ç≈Ç´ÇÈÇÊǧDžÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB
|
>>> hx 2800
The target heap is the System heap at 00002800
>>> il FetchOTGlobal
Disassembling from FetchOTGlobal
FetchOTGlobal
+00000 0015D5E2 LINK A6,#$0000 | 4E56 0000
+00004 0015D5E6 MOVE.L $00092434,D0 | 2039 0009 2434
+0000A 0015D5EC UNLK A6 | 4E5E
+0000C 0015D5EE RTS | 4E75
[... à»â∫è»ó™ ...]
|
ç≈èâÇÃÉRÉ}ÉìÉhÇÕåªç›Çà MacsBug ÇÃÉ^Å[ÉQÉbÉgÉ]Å[ÉìÇÉVÉXÉeÉÄÉqÅ[ÉvÇ…êÿÇËë÷ǶNjÇ∑ÅBéüÇÃÉRÉ}ÉìÉhÇÕ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇï‘Ç∑ä÷êîÇÉfÉBÉXÉAÉZÉìÉuÉãǵNjÇ∑ÅBFetchOTGlobal + 4 ÇÃçsÇ≈ OT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇ D0 ÉåÉWÉXÉ^Ç…à⁄ǵǃǢNjÇ∑ÅBDZDZÇ≈ÇÕÅAOT ÉOÉçÅ[ÉoÉãóÃàÊÇÃÉAÉhÉåÉXÇÕÉÅÉÇÉäà íuÇÃ$00092434 Ç…ï€ë∂Ç≥ÇÍǃǢÇÈDZÇΔÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBéüÇà MacsBug ÉRÉ}ÉìÉhÇ≈DZÇÃÉOÉçÅ[ÉoÉãóÃàÊÇ™É_ÉìÉvÇ≈Ç´Ç‹Ç∑ÅB
>>> dm 92434^ OTGlobal
Displaying OTGlobal at 000B5050
000B5050 fGestaltValue 0000000F
000B5054 f68KDeferredProc 00238164
000B5058 fVersion 01306007
[... à»â∫è»ó™ ...]
|
OT ÉOÉçÅ[ÉoÉãóÃàÊÇÉ_ÉìÉvÇ≈Ç´ÇΩÇÁÅAdžÇΔÇÕ PowerPC ÇΔìØÇ∂ï˚ñ@Ç™égǶNjÇ∑ÅB
ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÉpÉâÉÅÅ[É^ÇÃêßå‰
è„Ç≈ê‡ñæÇµÇΩÇÊǧDžÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇà OT ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÕ InitOpenTransport ÇåƒÇ—èoǵÇΩÇΔÇ´Ç…ÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇ…äÑÇËìñǃÇÁÇÍÇ‹Ç∑ÅBç≈èâÅAÉvÅ[ÉãÇÕîÒèÌÇ…è¨Ç≥Ç≠ÅAïKóvÇ…âûÇ∂ǃëùâ¡ÇµÇ‹Ç∑ÅBǵǩǵDZÇÃìÆçÏÇÕǢǬLJïKÇ∏ç≈ìKÇ≈džÇÈÇΔÇÕǩǨÇËÇ‹ÇπÇÒÅBì¡Ç…ÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ OT ÉÅÉÇÉääÑÇËìñǃÉãÅ[É`ÉìÇæÇØÇégǧèÍçáÇÕÅAǪÇÍÇ…ëSÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇó^ǶÇÈÇ◊Ç´Ç≈Ç∑ÅBäÑÇËìñǃÉãÅ[É`ÉìÇ™è≠ǵÇ∏ǬÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[ÉvÇè¡îÔÇ∑ÇÈï˚ñ@ÇÕÅAàÍìxÇ…ëÂÇ´Ç»ÉuÉçÉbÉNÇó^ǶÇÈï˚ñ@ÇÊÇËîÒå¯ó¶ìIÇ≈Ç∑ÅBÇ‹ÇΩÅAïpî…Ç…äÑÇËçûÇ›éûÇ…ÉÅÉÇÉäÇäÑÇËìñǃǃǢÇÈÇΔÅAÉNÉâÉCÉGÉìÉgÇÃÉÅÉÇÉäÉvÅ[ÉãÇ™è¡îÔÇ≥ÇÍǃǵNjǢÅAäÑÇËìñǃǙé∏îsÇ∑ÇÈâ¬î\ê´Ç™èoǃǴNjÇ∑ÅB
ÉNÉâÉCÉìÉgÇÃÉÅÉÇÉäÉvÅ[ÉãÇç◊Ç©Ç≠êßå‰Ç∑ÇÈï˚ñ@ÇÕ2ǬdžÇËÇ‹Ç∑
- OT ÉÅÉÇÉäÉäÉUÅ[ÉuÇóòópÇ∑ÇÈ
- ASLM Çà API ÇégǡǃÅAÉÅÉÇÉäÉvÅ[ÉãÇíºê⁄ëÄçÏÇ∑ÇÈ
DZÇÍÇÁÇÃÉeÉNÉjÉbÉNÇÕà»â∫Ç…ê‡ñæÇµÇ‹Ç∑ÅB
èdóv:
ÉAÉbÉvÉãÇÕëOé“ÇÃÉeÉNÉjÉbÉNÇã≠Ç≠êÑèßǵNjÇ∑ÅBOpen Transport ÇÕåªç› ASLM ÇÃÉNÉâÉCÉGÉìÉgÉvÅ[ÉãÇǪÇÃNjNjóòópǵǃǢNjÇ∑Ç™ÅAç°å„ÇÕǪǧÇΔLJå¿ÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅAè´óàÇÃÉVÉXÉeÉÄÇ≈ÇÕ ASLM é©ëÃÇ™ë∂ç›ÇµÇ»Ç¢â¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅB
|
OT ÉÅÉÇÉäÉäÉUÅ[ÉuÇóòópÇ∑ÇÈ
ÉAÉvÉäÉPÅ[ÉVÉáÉìÉ]Å[ÉìÇÃëSëÃÇ OT ÇÃÉÅÉÇÉääÑÇËìñǃDžóòópÇ∑ÇÈÅALJǡÇΔLJämé¿Ç»ï˚ñ@ÇÕÅAOT ÉÅÉÇÉäÉäÉUÅ[ÉuÇóòópÇ∑ÇÈDZÇΔÇ≈Ç∑ÅBÉAÉvÉäÉPÅ[ÉVÉáÉìÇãNìÆÇµÇΩéûÇ…ÅAëÂÇ´Ç¢ÉÅÉÇÉäÉuÉçÉbÉNÇäÑÇËìñǃÇÈDZÇΔÇ…ÇÊǡǃÅAÉÅÉÇÉäÉäÉUÅ[ÉuÇämï€ÇµÇ‹Ç∑ÅBǪÇÃå„ÅAÉÅÉÇÉäÇ™ïKóvDžǻǡÇΩéûÇÕÅAÇ‹Ç∏ OT ÇégǡǃäÑÇËìñǃǃÅAǪÇÍÇ™é∏îsǵÇΩèÍçáÇÕÉÅÉÇÉäÉäÉUÅ[ÉuÇégǢNjÇ∑ÅB
DZÇÃÉeÉNÉjÉbÉNÇÕ OTStreamLogViewer ÉTÉìÉvÉãÉRÅ[ÉhÉoÅ[ÉWÉáÉì 1.0.1b1 à»ç~Ç≈ OTMemoryReserve ÉÇÉWÉÖÅ[ÉãÇ≈äàópÇ≥ÇÍǃǢNjÇ∑ÇÃÇ≈ÅAǪÇÃÉRÅ[ÉhÇíºê⁄óòópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
íê:
OT ÉÅÉÇÉäÇëÂó Ç…äÑÇËìñǃǃÅAǪǵǃÇ∑ÇÆÇ…âèúÇ∑ÇÈï˚ñ@LJçlǶÇÁÇÍÇÈǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅADZÇÃéËñ@Ç≈ÇÕä˙ë“í ÇËÇÃåãâ ÇìæÇÁÇÍÇ‹ÇπÇÒÅBÉÅÉÇÉäÇâèúǵÇΩéûì_Ç≈ OT ÇÃÉÅÉÇÉää«óùÉVÉXÉeÉÄÇÕÉÅÉÇÉäÇ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ…ÉÅÉÇÉäÇÉäÉäÅ[ÉXǵǃǵNjǢNjÇ∑ÅB
|
ASLM API Ç…ÇÊÇÈÉÅÉÇÉäÉvÅ[ÉãÉpÉâÉÅÅ[É^ÇÃêßå‰
èdóv:
DZÇÃÉeÉNÉjÉbÉNÇóòópÇ∑ÇÈÇΔÅAOT Ç™ ASLM ÇóòópǵǃǢÇÈDZÇΔÇ…àÀë∂Ç∑ÇÈÇæÇØÇ≈Ç»Ç≠ÅAASLM é©ëÃÇ…àÀë∂Ç∑ÇÈDZÇΔDžǻǡǃǵNjǢNjÇ∑ÅBDZÇÃÇΩÇflÅAÉAÉbÉvÉãÇÕDZÇÃï˚ñ@ÇêÑèßǵNjÇπÇÒÅB
|
èdóv:
InitOpenTransportInContextÅiCarbon Ç‹ÇΩÇÕ OTClassicContext Ç…ÇÊÇÈé¿ëïÅjÇóòópÇ∑ÇÈèÍçáÇÕDZÇÃÉeÉNÉjÉbÉNÇóòópÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹ÇπÇÒÅB
|
ÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÇÊÇËç◊Ç©Ç≠êßå‰Ç∑ÇÈÇ…ÇÕ ASLM ÉvÉçÉOÉâÉ~ÉìÉOÉCÉìÉ^ÉtÉFÅ[ÉXÇégópǵNjÇ∑ÅBéñëOÇ… ASLM ÇΔÇÃê⁄ë±Çèâä˙âªÇµÇƒÇ®Ç≠ÇΔÅAInitOpenTransport ÇÕÅAǪÇÃê⁄ë±ÅiÇ®ÇÊǗǪÇÃÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÅjÇégópǵÅAêVǵÇ≠çÏê¨Ç∑ÇÈDZÇΔÇÕǵNjÇπÇÒÅBASLM ê⁄ë±ÇégǧÇΔÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉTÉCÉYÅAäÑÇËìñǃÇÈà íuÅAëùâ¡ÇÃäÑçáÇêßå‰Ç≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB
íê:
ASLM Ç≈ÉvÉçÉOÉâÉ~ÉìÉOÇçsǧDžÇÕÅAMac OS SDK CD Çà ASLM SDK Ç™ïKóvÇ≈Ç∑ÅB
|
èdóv:
68K C/C++ÉRÉ}ÉìÉhÇ©ÇÁ ASLM ÇåƒÇ—èoÇ∑Ç…ÇÕÅA4 ÉoÉCÉgêÆêîÇópǢǃÉrÉãÉhÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
|
DZÇÃÉeÉNÉjÉbÉNÇégǧDžÇÕÅAInitOpenTransport ÇÃëOÇ… InitLibraryManager ÇåƒÇ—èoÇ≥Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBÇ‹ÇΩÅACloseOpenTransport ÇÃå„Ç… CleanupLibraryManager ÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉãÅ[É`ÉìÇÃÉvÉçÉgÉ^ÉCÉvÇÕÅuLibraryManager.hÅvÇ…íËã`Ç≥ÇÍǃǢNjÇ∑ÅBì«é“ÇÃï÷ãXÇÃÇΩÇflà»â∫Ç…åfç⁄ǵNjÇ∑ÅB
OSErr InitLibraryManager(size_t poolsize, int zoneType, int memType);
void CleanupLibraryManager(void);
|
InitLibraryManager Ç÷ÇÃÉpÉâÉÅÅ[É^Ç≈ÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃèâä˙ÉTÉCÉYÅiíPà ÇÕÉoÉCÉgÅjÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃà íuÅiïÅí ÇÕ kSystemZoneÅAkApplicZoneÅAkCurrentZoneÅjÅAÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇÃÉÅÉÇÉäÇÃéÌófiÅiïÅí ÇÕ kNormalMemoryÅAÇΩÇæÇµÉyÅ[ÉWÉìÉOÇ™à¿ëSÇ≈ǻǢÇΔÇ´Ç…ÉAÉNÉZÉXÇ∑ÇÈèÍçáÇÕ kHoldMemoryÅjÇéwíËÇ≈Ç´Ç‹Ç∑ÅB
éüÇÃÉRÅ[ÉhÇÃífï–ÇÕDZÇÃÉeÉNÉjÉbÉNÇé¶Ç∑LJÇÃÇ≈Ç∑ÅBÇ‹Ç∏ÉAÉvÉäÉPÅ[ÉVÉáÉìÉqÅ[Évì‡Ç…è]ëÆÉ]Å[ÉìÇämï€ÇµÇ‹Ç∑ÅiÉTÉCÉYÇÕÉcÅ[ÉãÉ{ÉbÉNÉXópÇ…ëΩè≠ÉÅÉÇÉäÇécǵÇΩÉqÅ[ÉvÇÃécÇËëSïîÅBÅjéüÇ…ÅAInitOpenTransport ÇåƒÇ—èoÇ∑ëOÇ…ÅAInitLibraryManager Ç≈ ASLM Ç…ê⁄ë±ÇµÇ‹Ç∑ÅiǪǵǃêÊÇÃÉ]Å[ÉìÇÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇΔǵNjÇ∑ÅBÅj
// èdóv:
// DZÇÃÉRÅ[ÉhÇóòópÇ∑ÇÈDZÇΔÇ≈ÅAASLM Ç…àÀë∂ǵǃǵNjǢNjÇ∑ÅB
// DZÇÃÇΩÇflÅAÉAÉbÉvÉãÇ≈ÇÕêÑèßǵǃǢNjÇπÇÒÅB
static OSStatus InitOpenTransportWithMemoryLimit(void)
{
OSStatus err;
SInt32 junkTotalFree;
SInt32 contigFree;
SInt32 zoneSize;
Ptr subsidiaryZone;
THz oldZone;
// Ç‹Ç∏ÉVÉXÉeÉÄÇÃÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇåƒÇ—èoǵÅA
// ÉqÅ[Évì‡ÇÃç≈ëÂòAë±óÃàÊÇí≤Ç◊ÇÈÅB
PurgeSpace(&junkTotalFree, &contigFree);
zoneSize = contigFree - kBytesReservedForToolboxInApplicationZone;
// ǪÇÃÉuÉçÉbÉNÇ…ÉÅÉÇÉäÇäÑÇËìñǃÉ]Å[ÉìÇçÏê¨Ç∑ÇÈÅB
// ë±Ç¢Çƒ ASLM Çèâä˙âªÇµÅAǪÇÃÉ]Å[ÉìëSëÃÅiASLM ÇÃ
// ÉIÅ[ÉoÅ[ÉwÉbÉhÇèúÇ≠ÅjÇêËÇflÇÈÉvÅ[ÉãÇÃçÏê¨ÇàÀóäÇ∑ÇÈÅB
// ç≈å„Ç… OT Çèâä˙âªÇ∑ÇÈÅB
// Ç∑Ç≈Ç… ASLM Ç™èâä˙âªÇ≥ÇÍǃǢÇÈÇÃÇ≈ÅAOT ÇÕ ASLM Ç™êÊÇÃ
// É]Å[ÉìÇ…çÏê¨ÇµÇΩÉvÅ[ÉãÇ≈ OTAllocMem ÇÃóvãÅÇ…âûǶÇÈÅB
subsidiaryZone = NewPtr(zoneSize);
oldZone = GetZone();
// InitZone ÇÕåªç›ÇÃÉ]Å[ÉìÇêVǵÇ≠çÏê¨ÇµÇΩÉ]Å[ÉìÇ…ê›íËÇ∑ÇÈÇÃÇ≈ÅA
// é©ï™Ç≈çsǧïKóvÇÕǻǢÅB
InitZone(nil, 16, subsidiaryZone + zoneSize, subsidiaryZone);
err = InitLibraryManager(zoneSize - 2048, kCurrentZone, kNormalMemory);
if (err == noErr) {
err = InitOpenTransport();
if (err != noErr) {
CleanupLibraryManager();
}
}
SetZone(oldZone);
return err;
}
|
èdóv:
DZÇÃÉRÅ[ÉhÇÕÅADTS ÉTÉìÉvÉãÉRÅ[ÉhÇà OTStreamLogViewer Çä»íPDžǵÇΩLJÇÃÇ≈Ç∑ÅiÉGÉâÅ[É`ÉFÉbÉNÇå∏ÇÁǵNjǵÇΩÅBÅjDZÇÃÉRÅ[ÉhÇégǧèÍçáÇÕÉTÉìÉvÉãÇÃå≥ÇÃÉRÅ[ÉhÇì¸éËǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
íê:
è„ãLÇÃÉeÉNÉjÉbÉNÇÕ ASLM API ÇégǡǃçsǶÇÈóBàÍÇÃï˚ñ@ÇΔÇÕǩǨÇËÇ‹ÇπÇÒÅBè⁄ç◊ÇÕÅwASLM Developer's GuideÅxÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB
|
è„ãâï“
DZÇÃÉZÉNÉVÉáÉìÇ≈ÇÕÅAOT ÉÅÉÇÉää«óùÇÃä÷òAéñçÄÇÃÇ§Çøè„ãâï“ÇéÊÇËè„Ç∞Ç‹Ç∑ÅBì¡Ç…ÅAã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇ‚ÉJÅ[ÉlÉãÉvÅ[ÉãÇ™éûä‘Ç™åoâflÇ∑ÇÈDžǵÇΩǙǢÅAägëÂÅAèkè¨Ç∑ÇÈóléqÇê‡ñæÇµÇ‹Ç∑ÅBÇΩÇæÇµÇªÇÃëOÇ…ÅAOT ÉÅÉÇÉäÉVÉXÉeÉÄÇÃìÆçÏÇïœçXÇ∑ÇÈ API DžǬǢǃäwÇ‘ïKóvǙdžÇËÇ‹Ç∑ÅB
íê:
DZÇÃÉZÉNÉVÉáÉìÇÕ Open Transport ÉAÅ[ÉLÉeÉNÉ`ÉÉÇÃê[Ç¢íméØÇéùǬêlÇÃÇΩÇflÇÃéQçlópÇ…èëǴNjǵÇΩÅBóùâÇ≈Ç´Ç»Ç≠ǃLJãCDžǵǻǢÇ≈Ç≠ÇæÇ≥Ç¢ÅB
|
OTSetMemoryLimits
OTSetMemoryLimits ÇégǧÇΔÉ\ÉtÉgÉEÉFÉAÇ©ÇÁ OT ÉÅÉÇÉäÉvÅ[ÉãÇÃìÆçÏÇíºê⁄ïœçXÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÃÉvÉçÉgÉ^ÉCÉvÇÕéüÇÃÇΔÇ®ÇËÇ≈Ç∑ÅB
#ifdef __cplusplus
extern "C" {
#endif
extern OSStatus OTSetMemoryLimits(size_t growSize, size_t maxSize);
#ifdef __cplusplus
}
#endif
|
growSize ÉpÉâÉÅÅ[É^ÇÕç°Ç∑ÇÆ OT DžǪÇÃÉTÉCÉYÇ‹Ç≈ÉJÅ[ÉlÉãÉvÅ[ÉãÇägëÂÇ∑ÇÈDZÇΔÇéwé¶ÇµÇ‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇåƒÇ—èoÇ∑ÇΔÅAOT ÇÕÇΩÇæÇøÇ…ÉJÅ[ÉlÉãÉvÅ[ÉãÇǪÇÃílÇ‹Ç≈ëùâ¡Ç≥ÇπÇ‹Ç∑ÅBmaxSize ÉpÉâÉÅÅ[É^ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇÃêVǵǢç≈ëÂílÇ≈Ç∑ÅBOT ÇÕDZÇÃílÇí¥Ç¶ÇƒÉJÅ[ÉlÉãÉvÅ[ÉãÇägëÂÇ∑ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅB
OTSetMemoryLimits ÇÕìØéûÇ…ÅAOpen Transport ÇÃì‡ïîïœêî fServerMode Çê›íËǵNjÇ∑ÅBOTSetMemoryLimits Çê≥ÇÃílÇà growSize Ç≈åƒÇ—èoÇ∑ÇΔÅAfServerMode ÇÕëùâ¡ÇµÇ‹Ç∑ÅBgrowSize Ç™É[ÉçÇæÇΔ fServerMode ÇÕå∏ÇËÇ‹Ç∑ÅBfServerMode Ç™É[Éçà»äOÇæÇΔÅAOT ÇÕã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇ‚ÉJÅ[ÉlÉãÉvÅ[ÉãÇèkè¨Ç∑ÇÈDZÇΔÇÕǵNjÇπÇÒÅBçsãVÇÃǢǢÉTÅ[ÉoÉ\ÉtÉgÉEÉFÉAÇΔÇ»ÇÈÇ…ÇÕÅAãNìÆéûÇ… OTSetMemoryLimits Ç≈ê≥Çà growSize ÇéwíËǵÅAèIóπéûÇ…ÇÕ growSize Ç…É[ÉçÇéwíËÇ∑Ç◊Ç´Ç≈Ç∑ÅB
ç≈å„Ç…ÅAÉJÅ[ÉlÉãÉvÅ[ÉãÇ 20K à»è„ëùÇ‚Ç∑ÇΔÅAOTSetMemoryLimits ÇÕã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãLJ growSize ÇÃílÇà 10% ÇæÇØëùǂǵNjÇ∑ÅB
OTSetMemoryLimits ÇÕã…í[Ç…ÉoÅ[ÉXÉgÅiòAë±ëóéÛêMÅjÇÃëΩÇ¢ê⁄ë±ÉpÉ^Å[ÉìÇ‚ï¿çsǵǃëΩêîÇÃê⁄ë±ÇéÛÇØïtÇØÇÈÉTÅ[ÉoÉ\ÉtÉgÉEÉFÉAÇÃǛǙégópÇ∑ÇÈLJÇÃÇ≈Ç∑ÅBÉJÅ[ÉlÉãÉvÅ[ÉãÇÃç≈ëÂÉTÉCÉYÇëùÇ‚Ç∑ÇΔÅAÉTÅ[ÉoÇÕëΩêîÇÃï¿çsÇ∑ÇÈê⁄ë±Ç…ëŒâûÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉJÅ[ÉlÉãÉvÅ[ÉãÇÇ∑ÇÆÇ…ëùëÂÇ≥ÇπÇÈDZÇΔÇ≈Åiê⁄ë±Ç™Ç†ÇÈÇΩÇ—Ç≈ÇÕÇ»Ç≠ÅjÅAÉTÅ[ÉoÇÕÅAóòópèÛãµÇ…âûÇ∂ǃÉJÅ[ÉlÉãÉvÅ[ÉãÇ™ëùëÂÇ∑ÇÈÇÃÇë“ǬDZÇΔÇ»Ç≠ÅAï¿óÒÇÃê⁄ë±Ç≈LJäJénå„ÇΩÇæÇøÇ…éÛÇØïtÇØÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBÉJÅ[ÉlÉãÉvÅ[ÉãÇÃèkè¨Çã÷é~Ç∑ÇÈÇΔÅAí∑éûä‘ÇÃë“ã@èÛë‘ÇÃå„Ç≈LJìØéûÇ…ëΩêîÇÃê⁄ë±Ç…ëŒâûÇ≈Ç´Ç‹Ç∑ÅB
OTSetMemoryLimits ÇÕÉVÉXÉeÉÄÉ^ÉXÉNéûÇ…åƒÇ—èoÇ≥Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBéwíËó Ç‹Ç≈ÉJÅ[ÉlÉãÉvÅ[ÉãÇägëÂÇ≈ǴǻǢèÍçáÇÕÉGÉâÅ[Ç™ï‘Ç≥ÇÍÇ‹Ç∑ÅB
èdóv:
OTSetMemoryLimits ÇÕå¬ÅXÇÃê⁄ë±ÇÃê´î\Çè„Ç∞ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÃä÷êîÇÕêîè\ÇÃê⁄ë±Çï¿çsǵǃéùǬÉ\ÉtÉgÉEÉFÉAÇ≈ǵǩóLå¯Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅBDTS ÇÕÉNÉâÉCÉAÉìÉgÉ\ÉtÉgÉEÉFÉAÇ™ OTSetMemoryLimits ÇåƒÇ—èoÇ∑DZÇΔÇÕÇ®Ç∑Ç∑ÇflǵNjÇπÇÒÅB
|
íê:
OTSetMemoryLimits ÉãÅ[É`ÉìÇÕ Open Transport ÇÃÉwÉbÉ_ÉtÉ@ÉCÉãÇ…ÇÕdžÇËÇ‹ÇπÇÒÅBDZÇÃÉãÅ[É`ÉìÇégǧèÍçáÇÕé©ï™Ç≈ÉvÉçÉgÉ^ÉCÉvêÈåæÇǵǃÇ≠ÇæÇ≥Ç¢ÅBÉwÉbÉ_Ç…ì¸ÇÍǃǢǻǢóùóRÇÕè„ãLÇÃï˚êjÇ©ÇÁǴǃǢNjÇ∑ÅBàÍî ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÉvÉçÉOÉâÉÄÇÕDZÇÃÉãÅ[É`ÉìÇåƒÇ—èoÇ∑Ç◊Ç´Ç≈ÇÕǻǢǩÇÁÇ≈Ç∑ÅB
|
íê:
OTSetMemoryLimits ÇÃëOêgDždžÇΩÇÈ OTSetServerMode ÇΔǢǧä÷êîǙdžÇËÇ‹Ç∑ÅBDZÇÃÉãÅ[É`ÉìÇÕ OTSetMemoryLimits Ç…äÆëSÇ…éÊÇËçûÇ‹ÇÍNjǵÇΩÅB
|
OT ÉÅÉÇÉäÉvÅ[ÉãÇÃägëÂ
OT ÇÕÅAÉoÉCÉiÉäÅEÉoÉbÉNÉIÉtÅEÉAÉãÉSÉäÉYÉÄÇópǢǃÉvÅ[ÉãÇägëÂǵNjÇ∑ÅBÇ‹Ç∏ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ… 1 å¬ÇÃëÂÇ´Ç»ÉÅÉÇÉäÉuÉçÉbÉNÇóvãÅǵNjÇ∑ÅBǪÇÃÉTÉCÉYÇÃÉuÉçÉbÉNÇ™éÊìæÇ≈ǴǻǢÇΔÅAóvãÅÉTÉCÉYÇîºï™Ç…ǵǃçƒééçsǵNjÇ∑ÅBDZÇÃìÆçÏÇóvãÅǫǮÇËÇÃÉvÅ[ÉãÇÃägëÂÇ…ê¨å˜Ç∑ÇÈÇ©ÅAÉuÉçÉbÉNÉTÉCÉYÇ™ 10K ÇÊÇËè≠Ç»Ç≠ǻǡǃǵNjǧNjÇ≈åJÇËï‘ǵNjÇ∑ÅB
OT ÉÅÉÇÉäÉvÅ[ÉãÇÃèkè¨
OT ÉÅÉÇÉäÉvÅ[ÉãÇÕèkè¨â¬î\Ç≈Ç∑ÅBÉÅÉÇÉäÉvÅ[ÉãÇÕ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ©ÇÁäÑÇËìñǃÇΩï°êîÇÃïsòAë±Ç»ÉÅÉÇÉäÉuÉçÉbÉNÇ©ÇÁÇ»ÇËÇ‹Ç∑ÅBÉvÅ[ÉãÇèkè¨Ç∑ÇÈèÍçáÇÕÅAMac OS ÉÅÉÇÉäÉuÉçÉbÉNǙǪÇÍǺÇÍãÛǩǫǧǩåüç∏ǵNjÇ∑ÅBãÛÇ≈džÇÍÇŒÅAǪÇÃÉÅÉÇÉäÉuÉçÉbÉNÇÕ Mac OS ÉÅÉÇÉäÉ}ÉlÅ[ÉWÉÉÇ…ï‘ãpǵNjÇ∑ÅB
OT ÉÅÉÇÉäÉvÅ[ÉãÇÕéüÇÃèÍçáÇ…èkè¨Ç≥ÇÍÇ‹Ç∑ÅB
- ÉNÉâÉCÉAÉìÉgÇ™èIóπǵÅiCloseOpenTransport ÇåƒÇ—èoÇ∑Ç©ÅAåƒÇ—èoÇ≥Ç∏Ç…ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™èIóπÇ∑ÇÈèÍçáÅjÅAOT Ç™ÉTÅ[ÉoÉÇÅ[ÉhÇ≈ǻǢÇΔÅAOT ÇÕã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇΔÉJÅ[ÉlÉãÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
- OT Ç™ÉNÉâÉCÉAÉìÉgÉâÉCÉuÉâÉäÇÉAÉìÉçÅ[ÉhÇ∑ÇÈÇΔÇ´ÅAã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
- OT Ç™ÉJÅ[ÉlÉãÇÉAÉìÉçÅ[ÉhÇ∑ÇÈÇΔÇ´ÅiInitOpenTransport ÇåƒÇ—èoǵǃǢÇÈÉNÉâÉCÉAÉìÉgÇ™ 1 ǬLJǻÇ≠ǻǡÇΩÇΔÇ´ÅjÅAÉTÅ[ÉoÉÇÅ[ÉhÇ≈Ç»ÇØÇÍÇŒÅAÉJÅ[ÉlÉãÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
- OT Ç™ÉJÅ[ÉlÉãÉÜÅ[ÉeÉBÉäÉeÉBÉâÉCÉuÉâÉäÇÉAÉìÉçÅ[ÉhÇ∑ÇÈÇΔÇ´ÅiInitOpenTransportUtilities ÇåƒÇ—èoǵǃǢÇÈÉNÉâÉCÉAÉìÉgÇ™ 1 ǬLJǻÇ≠ǻǡÇΩÇΔÇ´ÅjÅAOT ÇÕÉ|Å[ÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
- OT ÇÕÉ|Å[ÉgÉXÉLÉÉÉiÇÃé¿çså„ÅAÉ|Å[ÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
- OT ÇÕÅAÉRÉìÉtÉBÉOÉåÅ[É^ÇÃÉäÉXÉgÇíHÇËÅAǪÇà OTSetupConfigurator Ç‹ÇΩÇÕ OTStartupConfigurator ÉGÉìÉgÉäÉ|ÉCÉìÉgÇåƒÇ—èoǵÇΩå„ÇΩÇæÇøÇ…ÅAã§óLÉNÉâÉCÉAÉìÉgÉvÅ[ÉãÇå∏ÇÁǵNjÇ∑ÅB
ÉJÅ[ÉlÉãÉvÅ[ÉãÇ…ä÷Ç∑ÇÈǪÇÃëºÇÃè⁄ç◊éñçÄ
OT ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÉTÉCÉYÇÃè„å¿Ç…å≈íËÇÃå¿äEílÇê›íËǵǃǢNjÇ∑ÅBÉNÉâÉCÉAÉìÉgÇÕDZÇÃå¿äEílÇ OTSetMemoryLimits ÉãÅ[É`ÉìÇ≈ê›íËÇ≈Ç´Ç‹Ç∑ÅBDZDZÇ≈ã^ñ‚Ç™ÇÌÇ´Ç‹Ç∑ÅBå¿äEílÇÃèâä˙ílÇÕÇ»ÇÒÇ≈ǵÇÂǧÅBÉCÉìÉXÉgÅ[ÉãÇÃíºå„Ç…ÇÕÅAOT ÇÕDZÇÍÇÉ}ÉVÉìÇÃï®óùÉÅÉÇÉäÅigestaltPhysicalRAMSize Ç≈í≤Ç◊ÇÈÅjÇà 10% Ç…ê›íËǵNjÇ∑ÅBDZÇÃílÇÕÅAÉlÉbÉgÉèÅ[ÉNÉ\ÉtÉgÉEÉFÉAÇ…è\ï™Ç»ÉoÉbÉtÉ@ãÛä‘Çó^ǶǬǬÅAOT Ç™ÉÜÅ[ÉUÇÃëSÉÅÉÇÉäÇè¡îÔǵǻǢÇÊǧÉoÉâÉìÉXÇéÊÇ¡ÇΩåãâ Ç≈Ç∑ÅB
ÉJÅ[ÉlÉãÇç≈èâÇ…ÉçÅ[ÉhÇ∑ÇÈÇΔÅAOT ÇÕè„ãLÇÃèâä˙ílÇ≈ÉJÅ[ÉlÉãÉvÅ[ÉãÇçÏê¨ÇµÇ‹Ç∑ÅBǵǩǵÅAÉJÅ[ÉlÉãÇ™ÉçÅ[ÉhÇ∑ÇÈÇΩÇ—Ç…Åiç≈èâÇÃÇΔǴLJä‹ÇflǃÅjÅAOT ÇÕÉçÅ[ÉhÇäÆóπÇ∑ÇÈëOÇ…è≠Ç»Ç≠ÇΔLJ 96KB ÇæÇØÉJÅ[ÉlÉãÉvÅ[ÉãÇëùâ¡Ç≥ÇπÇ‹Ç∑ÅBDZÇÍÇÕÅAÉJÅ[ÉlÉãÇ™ÉAÉìÉçÅ[ÉhÇ≥ÇÍǃǢÇÈÇΔÇ´ÇÕÉJÅ[ÉlÉãÉvÅ[ÉãÇè¨Ç≥Ç≠ǵÅAÉçÅ[ÉhÇÃç€Ç…ÇÕÇ∑njǂÇ≠ëùâ¡Ç≥ÇπÇÈÇΩÇflÇ≈Ç∑ÅB
óvñÒ
Open Transport ÇÕêMóäê´ÇÃdžÇÈè_ìÓÇ≈äÑÇËçûǛDžëŒâûǵÇΩÉÅÉÇÉää«óùÉVÉXÉeÉÄÇ≈Ç∑ÅBìÆçÏå¥óùÇóùâÇ∑ÇÈDZÇΔÇ≈ÅAä◊ÇËÇ™ÇøÇ»é∏îsÇîÇØÇ»Ç™ÇÁÅAǵǩLJäÑÇËçûÇ›éûÇ…ÉÅÉÇÉäÇäÑÇËìñǃÇÈÉRÅ[ÉhÇèëÇ≠DZÇΔÇ™Ç≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅB
éQçlï∂å£
ïœçXóöó
|